package com.and9.mchen.mcmusic.dao;

import com.and9.mchen.mcmusic.entity.ImageUrl;
import com.and9.mchen.mcmusic.exception.DaoException;

/**
 * 
 * @author MC
 * @version  1.0
 */
public interface IImageUrlDao {

	String[] BASEPROPERTYNAMES={"min", "middle", "max"};
	
	/**
	 * <p>
	 * 如果imageUrl对象为null<br/>
	 * 则返回-1
	 * </p>
	 * <p>
	 * 保存对象到数据库的时候，imageUrl的id为null或者0即可<br/>
	 * 保存对象时，propertyNames只要传null即可<br/>
	 * </p>
	 * <p>
	 * 更新对象的时候，不准更新imageUrl父类的属性<br/>
	 * 如果存在父类属性，则会修改propertyNames属性为imageUrl属性
	 * </p>
	 * @param imageUrl
	 * @param propertyNames
	 * @return
	 * 返回创建或更新<tt>imageUrl</tt>的成功次数
	 * @throws DaoException
	 */
	int createOrUpdateImageUrl(ImageUrl imageUrl, String... propertyNames) throws DaoException;
	
	/**
	 * <p>
	 * 如果id <= 0</br>
	 * 则返回-1
	 * </p>
	 * @param id
	 * @return
	 * 返回根据imageUrl的<tt>id</tt>删除imageUrl成功的次数
	 */
	int deleteImageUrlByImageUrlId(long id) throws DaoException;
	
	/**
	 * <p>
	 * 如果id <= 0</br>
	 * 则返回null
	 * </p>
	 * @param id
	 * @return
	 * 根据album的<tt>id</tt>查找imageUrl<br/>
	 * 查找失败返回null
	 * @throws DaoException
	 */
	ImageUrl getImageUrlByAlbumId(long id) throws DaoException;
	
	/**
	 * <p>
	 * 如果id <= 0</br>
	 * 则返回null
	 * </p>
	 * @param id
	 * @return
	 * 根据imageUrl的<tt>id</tt>查找imageUrl<br/>
	 * 查找失败返回null
	 * @throws DaoException
	 */
	ImageUrl getImageUrlByImageUrlId(long id) throws DaoException;
	
	/**
	 * <p>
	 * 如果uniqueId 是 null<br/>
	 * 则返回null
	 * </p> 
	 * @param id
	 * @return
	 * 根据imageUrl的<tt>uniqueId</tt>查找imageUrl<br/>
	 * 查找失败返回null
	 * @throws DaoException
	 */
	ImageUrl getImageUrlByImageUrlUnqiueId(String uniqueId) throws DaoException;
	
	/**
	 * <p>
	 * 如果id <= 0</br>
	 * 则返回null
	 * </p>
	 * @param id
	 * @return
	 * 根据singer的<tt>id</tt>查找imageUrl<br/>
	 * 查找失败返回null
	 * @throws DaoException
	 */
	ImageUrl getImageUrlBySingerId(long id) throws DaoException;
	
}
